package pta;

/*	水仙花数是指一个N位正整数（7≥N≥3），它的每个位上的数字的N次幂之和等于它本身。例如：153=13+53+33。 要求编写程序，计算所有N位水仙花数。
	输入格式:
	输入一个正整数N（3≤N≤7）。
	
	输出格式:
	按递增顺序输出所有N位水仙花数，每个数字占一行。
	输入样例:
	在这里给出一组输入。例如：
	3
	
	输出样例:
	在这里给出相应的输出。例如：
	153
	370
	371
	407
 */
import java.util.Scanner;

public class Daffodil {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		// 水仙花数的位数
		int N = input.nextInt();
		// 使用 Math.pow 函数将 10 的 (N-1) 次方计算出N位数的最小值，然后将结果转换为整数
		int a = (int) Math.pow(10, N - 1);
		// 使用 Math.pow 函数将 10 的 N 次方计算出N位数的最大值，然后将结果转换为整数
		int b = (int) Math.pow(10, N) - 1;
		// 遍历从 a 到 b 的所有N位数。
		for (int i = a; i <= b; i++) {
			// 保留 i 的原始值，以便进行后续比较。
			int temp = i;
			// 存储每个数字的N次幂的和
			int sum = 0;
			// 循环N次，每次针对当前数字的每一位进行操作
			for (int j = 0; j < N; j++) {
				// 提取 temp 的最后一位数字，并将其存储在变量 s 中
				int s = temp % 10;
				// 计算数字 s 的N次幂，并将其加到 sum 中
				sum += Math.pow(s, N);
				// 通过执行整数除法将 temp 的最后一位数字移除，
				// 实际上是将数字向右移动了一位
				temp /= 10;
			}
			if (sum == i) {
				// 检查数字的每一位的N次幂的和 sum 是否等于原始数字 i。
				// 如果相等，则打印该数字，表示它是一个水仙花数。
				System.out.println(i);
			}
		}
	}
}
